namespace MultiAgentsShared;

[AttributeUsage(AttributeTargets.Class, Inherited = false)]
public class GptToolSetAttribute : Attribute
{
    public string Name { get; }
    public string Description { get; }

    public GptToolSetAttribute(string name, string description)
    {
        Name = name;
        Description = description;
    }
}

[AttributeUsage(AttributeTargets.Method, Inherited = false)]
public class GptFuncAttribute : Attribute
{
    public string Description { get; }
    public bool RequireApproval { get; }

    public GptFuncAttribute(string description, bool requireApproval)
    {
        Description = description;
        RequireApproval = requireApproval;
    }
}

// Attribute for parameter description
[AttributeUsage(AttributeTargets.Parameter, Inherited = false)]
public class GptFuncParamAttribute : Attribute
{
    public string Description { get; }

    public GptFuncParamAttribute(string description)
    {
        Description = description;
    }
}
